<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <!-- 异步操作 -->
    <!-- 1.promise -->
    <!-- 2.generator写法比较复杂，难以阅读，又出现了的async -->
    <!-- 3.async异步操作更简便 -->
</body>
<script>
    //作用：让异步更加简单，哈哈，让生活更美好。
    // 基本操作：async 它会返回一个promise对象， 哈哈 又可以使用then() catch()了。
    // 其实async是generator的语法糖(简单易懂的语法)

    // async function fn(){
    //     return await "哈哈"
    // }

    // let pm = fn()

    // console.log(pm);
    // pm.then(res=>{
    //     console.log(res);
    // }).catch(err=>{
    //     console.log(err);
    // })

    // async function fn(){
    //     let s = await 'hello world';
    //     let data = await s.split(" ");
    //     return data;
    // }
    // 如果async函数中有多个await ,那么then函数会等待所有的await指令运行完成，才开始执行。
    // let pm =  fn();
    //   pm.then(res=>{
    //         console.log(res)
    //     }).catch(e=>{
    //         console.log(e)
    //     })

    // 错误演示
    // async function fn2() {
    //     throw new Error("出错了")
    // }
    // var pm = fn2();
    // pm.then(v => console.log(v)).catch(e => console.log(e));

    // async function fn2(){
    //     // throw new Error("出错了")
    //     await Promise.reject("出错了");
    //     await Promise.resolve("hello");
    // }
    // fn2().then(v=>console.log(v)).catch(e=>console.log(e));

    	
    // 用try catch 处理一下
    async function fn2(){
        try {
            await Promise.reject("出错了");
            // console.log(666);
        } catch (error) {
          console.log(error);
        }
        return   await Promise.resolve("hello");
    }
    fn2().then(v=>console.log(v)).catch(e=>console.log(e));
</script>

</html>